package cn.iocoder.yudao.module.eval.dal.dataobject.candidate;

import cn.iocoder.yudao.framework.tenant.core.db.TenantBaseDO;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 参评人员信息 DO
 *
 * @author 芋道源码
 */
@TableName("eval_candidate_info")
@KeySequence("eval_candidate_info_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class EvalCandidateInfoDO extends TenantBaseDO {

    /**
     * 主键ID
     */
    @TableId
    private Long id;
    
    /**
     * 计划ID，关联eval_plans表
     */
    private Long planId;
    
    /**
     * 候选人ID，关联system_users表（内部人员）
     */
    private Long candidateId;
    
    // ========== 基本信息（支持外部导入） ==========
    
    /**
     * 姓名
     */
    private String name;
    
    /**
     * 身份证号
     */
    private String idNumber;
    
    /**
     * 手机号
     */
    private String mobile;
    
    /**
     * 邮箱
     */
    private String email;
    
    /**
     * 性别：1-男，2-女
     */
    private Integer gender;
    
    /**
     * 出生日期
     */
    private LocalDate birthDate;
    
    // ========== 工作信息 ==========
    
    /**
     * 工作单位
     */
    private String workUnit;
    
    /**
     * 部门
     */
    private String department;
    
    /**
     * 岗位
     */
    private String position;
    
    /**
     * 工作年限
     */
    private BigDecimal workYears;
    
    // ========== 申报信息 ==========
    
    /**
     * 申报等级
     */
    private String appliedLevel;
    
    /**
     * 申报职业
     */
    private String appliedProfession;
    
    // ========== 来源信息 ==========
    
    /**
     * 数据来源：1-内部添加，2-外部导入，3-批量导入
     */
    private Integer dataSource;
    
    /**
     * 导入批次ID
     */
    private String importBatchId;
    
    // ========== 状态信息 ==========
    
    /**
     * 报名状态：1-已报名，2-已确认，3-已取消
     */
    private Integer registrationStatus;
    
    /**
     * 报名时间
     */
    private LocalDateTime registrationTime;
    
    /**
     * 确认时间
     */
    private LocalDateTime confirmationTime;
    
    // ========== 备注信息 ==========

    /**
     * 备注信息
     */
    private String remarks;

}
